iT邦幫忙

2024 iThome 鐵人賽

DAY 5
0
佛心分享-我的私藏工具箱

作業系統的專武系列 第 5

PowerShell發HTTP Request

  • 分享至 

  • xImage
  •  

在跳板機只有Windows情況,而且安裝別的程式又沒權限,只好利用Windows的PowerShell來達成command line做Http GET的作用:

在PowerShell提示下只需一行:就可以做到網路爬蟲

(Invoke-WebRequest "http://172.22.1.201:8080/api/cmd?cmd=api&type=Query").content

在Invoke-WebRequest後接的URL字串可以不用雙引號,但&是特殊字元,所以遇到&就要雙引號。

而若遇到中文參數要encode,但並非所有Windows平台都有支援System.Web套件,所以要使用前先執行

Add-Type -AssemblyName System.Web

這樣才能把套件引進來,接著call法如下:

(Invoke-WebRequest ("http://172.22.1.201:8080/twnicapi/cmd?cmd=api&type=&param={0}" -f [System.Web.HttpUtility]::UrlEncode("中文"))).content

用括號把字串括起,${0}為引數,-f後面接的參數依序對映引數${0}、${1}...,而${0}就是[System.Web.HttpUtility]::UrlEncode("中文”),把中文二字encode。

下載檔案:

 Invoke-WebRequest -Uri "http://www.contoso.com" -OutFile ./Downloads/file1

有時為解決弱掃問題,需要取得HTTP Response的headers資訊。程式如下:

param( 
    [Parameter(ValueFromPipeline=$true)] 
    [string] $Url 
)
$request = [System.Net.WebRequest]::Create( $Url ) 
$headers = $request.GetResponse().Headers 
$headers.AllKeys | 
     Select-Object @{ Name = "Key"; Expression = { $_ }}, 
     @{ Name = "Value"; Expression = { $headers.GetValues( $_ ) } }

使用方式:

> ./Get-HTTPHeaders.ps1 http://10.7.20.56:9080/sfa/assets/lib/html2canvas.min.js               

Key              Value                        
---              -----                        
Cache-Control    max-age=0                    
Date             Tue, 29 Nov 2022 08:11:45 GMT
Content-Type     application/javascript       
Last-Modified    Thu, 17 Mar 2022 16:13:36 GMT
Content-Length   166735                       
Content-Language zh-TW  

上一篇
XML特殊字元交換
下一篇
驗證jar是用什麼版本的jdk打包
系列文
作業系統的專武30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言